$errorText = implode( "\n\n", $this->errors );
$errorResponse = self::makeComment( $errorText );
if ( $context->shouldIncludeScripts() ) {
- $errorResponse .= 'if (window.console && console.error) {'
- . Xml::encodeJsCall( 'console.error', [ $errorText ] )
- . "}\n";
+ $errorResponse .= 'if (window.console && console.error) { console.error('
+ . self::encodeJsonForScript( $errorText )
+ . "); }\n";
}
// Prepend error info to the response
* @internal
* @since 1.32
* @param mixed $data
- * @return string JSON
+ * @return string|false JSON string, false on error
*/
public static function encodeJsonForScript( $data ) {
// Keep output as small as possible by disabling needless escape modes
* @throws Exception
*/
public static function makeConfigSetScript( array $configuration ) {
- $js = Xml::encodeJsCall(
- 'mw.config.set',
- [ $configuration ],
- self::inDebugMode()
- );
- if ( $js === false ) {
+ $json = self::encodeJsonForScript( $configuration );
+ if ( $json === false ) {
$e = new Exception(
'JSON serialization of config data failed. ' .
'This usually means the config data is not valid UTF-8.'
);
MWExceptionHandler::logException( $e );
- $js = Xml::encodeJsCall( 'mw.log.error', [ $e->__toString() ] );
+ return 'mw.log.error(' . self::encodeJsonForScript( $e->__toString() ) . ');';
}
- return $js;
+ return "mw.config.set($json);";
}
/**
] );
} else {
$chunk = ResourceLoader::makeInlineScript(
- Xml::encodeJsCall( 'mw.loader.load', [ $url ] ),
+ 'mw.loader.load(' . ResourceLoader::encodeJsonForScript( $url ) . ');',
$nonce
);
}
* @return string JavaScript code
*/
public function getScript( ResourceLoaderContext $context ) {
- $fileScript = parent::getScript( $context );
- $langDataScript = Xml::encodeJsCall(
- 'mw.language.setData',
- [
- $context->getLanguage(),
- $this->getData( $context )
- ],
- ResourceLoader::inDebugMode()
- );
- return $fileScript . $langDataScript;
+ return parent::getScript( $context )
+ . 'mw.language.setData('
+ . ResourceLoader::encodeJsonForScript( $context->getLanguage() ) . ','
+ . ResourceLoader::encodeJsonForScript( $this->getData( $context ) )
+ . ');';
}
/**
* @return string JavaScript code
*/
public function getScript( ResourceLoaderContext $context ) {
- return Xml::encodeJsCall(
- 'mw.user.options.set',
- [ User::getDefaultOptions() ],
- ResourceLoader::inDebugMode()
- );
+ return 'mw.user.options.set('
+ . ResourceLoader::encodeJsonForScript( User::getDefaultOptions() )
+ . ');';
}
}
*/
public function getScript( ResourceLoaderContext $context ) {
// Use FILTER_NOMIN annotation to prevent needless minification and caching (T84960).
- return ResourceLoader::FILTER_NOMIN . Xml::encodeJsCall(
- 'mw.user.options.set',
- [ $context->getUserObj()->getOptions( User::GETOPTIONS_EXCLUDE_DEFAULTS ) ],
- ResourceLoader::inDebugMode()
- );
+ return ResourceLoader::FILTER_NOMIN
+ . 'mw.user.options.set('
+ . ResourceLoader::encodeJsonForScript(
+ $context->getUserObj()->getOptions( User::GETOPTIONS_EXCLUDE_DEFAULTS )
+ )
+ . ');';
}
/**
*/
public function getScript( ResourceLoaderContext $context ) {
// Use FILTER_NOMIN annotation to prevent needless minification and caching (T84960).
- return ResourceLoader::FILTER_NOMIN . Xml::encodeJsCall(
- 'mw.user.tokens.set',
- [ $this->contextUserTokens( $context ) ],
- ResourceLoader::inDebugMode()
- );
+ return ResourceLoader::FILTER_NOMIN
+ . 'mw.user.tokens.set('
+ . ResourceLoader::encodeJsonForScript( $this->contextUserTokens( $context ) )
+ . ');';
}
/**